import axios from 'axios'
import { load } from 'cheerio'

const User_Agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
const timeout = 10000 // 10秒超时

/** 取网页数据
 * @param {string} url - 要获取的url
 * @returns {cheerio.load} - 解析后的html数据
 */

async function get_html(url) {
    try {
        // 获取网页内容
        const response = await axios.get(url, {
            headers: {
                'User-Agent': User_Agent
            },
            timeout: timeout
        })

        // 加载HTML到cheerio
        const $ = load(response.data)
        return $
    } catch (error) {
        console.error('获取或解析HTML时出错:', error.message)
        throw error
    }

}
/** 新华日报
 * @param {string} url - 日报的网页URL，默认当天的日报链接
 * @returns {Promise<Array>} - 返回一个包含图片信息的数组，每个元素包含图片的title和img属性
 */
async function xhby(url = "http://xh.xhby.net/pc/layout/index.html") {
    const $ = await get_html(url)

    // 提取指定的a标签内容
    let results = []

    // 根据你的HTML结构，查找包含特定模式的a标签
    $('li a').each((index, element) => {
        // 提纯图片链接
        const img = $(element).find('img').attr('src').replace(/\.\./, 'https://doss.xhby.net/zpaper/xhrb/pad').replace(/\.1$/, '')
        // 构建图片数组
        results.push({
            title: $(element).text().trim(),
            img: img
        })
    })
    return results
}


/** 人民日报
 * @param {string} url - 日报的网页URL，默认当天的日报链接
 * @returns {Promise<Array>} - 返回一个包含图片信息的数组，每个元素包含图片的title和img属性
 */
async function rmrb(url = "https://paper.people.com.cn/rmrb/pc/layout/") {
    const $ = await get_html(url)

    // 提取指定的a标签内容
    let results = []

    // 根据你的HTML结构，查找包含特定模式的a标签
    $('li a').each((index, element) => {
        // 提纯图片链接
        const img = $(element).find('img').attr('src').replace(/\.\./, 'http://paper.people.com.cn/rmrb/pc').replace(/\.2$/, '')
        // 构建图片数组
        results.push({
            title: $(element).text().trim(),
            img: img
        })
    })
    return results
}

/** 南方日报
 * @param {string} url - 日报的网页URL，默认当天的日报链接
 * @returns {Promise<Array>} - 返回一个包含图片信息的数组，每个元素包含图片的title和img属性
 */
async function nfrb(url = "https://epaper.southcn.com/m/ipaper/nfrb/html/index.html") {
    const $ = await get_html(url)

    // 提取指定的a标签内容
    let results = []

    // 根据你的HTML结构，查找包含特定模式的a标签
    $('li a').each((index, element) => {
        // 提纯图片链接
        const img = $(element).find('img').attr('src').replace(/\.\./, 'http://epaper.southcn.com/m/ipaper/nfrb').replace(/\.2$/, '')
        // 构建图片数组
        results.push({
            title: $(element).text().trim(),
            img: img
        })
    })
    return results
}


/** 
 * 导出函数
 * @module 
 */
export { xhby, rmrb, nfrb }